#include <iostream>
#include<graphics.h>
void exchange(int *x,int *y);
//交换数值 
void exchange(int *x,int *y){
    *x ^= *y;
    *y ^= *x;
    *x ^= *y;
}
int main(){
	initgraph(640,480);
    int x0=0,y0=0,x1=100,y1=100,c=RGB(0,0,255),a=0,dx=abs(x1-x0),dy=abs(y1-y0);//用a来判断是否交换过x,y的值 
    if (dx<dy){          //先判断最大位移方向，如果y为最大位移方向，则交换x,y值 
        a= 1;
        exchange(&x0,&y0);
        exchange(&x1,&y1);
        exchange(&dx, &dy);
    }
    int ix=(x1-x0)>0?1:-1,iy=(y1-y0)>0?1:-1;//判断起点和终点的方向 
    int x=x0,y=y0,d=dx;//定义中间x,中间y，误差量d  
 
    if(a==1){     //如果直线与x轴的夹角大于等于45度
            while(x!=x1){//当x=x1时，停止画点 
            if(d<0) d+=dy*2;
			else{
			        y+=iy; 
                    d+=(dy-dx)*2;
                }
            putpixel(y,x,c);
            x+=ix;
            }
         }
	else{ // 如果直线与x轴的夹角小于45度
            while(x!=x1){
            if(d<0) d+=dy*2;
			else {
                  y+=iy;
                  d+=(dy-dx)*2;
                 }
            putpixel(x,y,c);
            x+=ix;
        }
    }
    getch();
}
